/*
 * @Author: 生俊甫 1758142861@qq.com
 * @Date: 2024-10-11 19:59:15
 * @LastEditors: 生俊甫 1758142861@qq.com
 * @LastEditTime: 2024-10-11 21:17:48
 * @FilePath: /sjf/2024-project/2024_centos/test_to_c/tree_test/queue.h
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
#ifndef _QUEUE_H_
#define _QUEUE_H_
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<stdbool.h>
#include "tree.h"
/**
 * 需要注意的是该队列中每个节点中存放的是树中的一个节点的结构体
 * (_data,_left,_right)
 */
//前置声明引用
struct BinaryTreeNode;
//定义树结构的指针
typedef struct BinaryTreeNode* QDataType;

typedef struct node
{
    QDataType _data;
    struct node* _next;
}qnode;

typedef struct queue
{
    qnode* _head;
    qnode* _tail;
}queue;

void QueueInit(queue* pq);

void QueueDestroy(queue* pq);

void QueuePush(queue* pq, QDataType x);

void QueuePop(queue* pq);

QDataType QueueFront(queue* pq);//取队头的数据

QDataType QueueBack(queue* pq);//取队尾的数据

bool QueueEmpty(queue* pq);//判断队列是否为空

int QueueSize(queue* pq);

#endif